// 函数的扩展

// 特点
//     1.函数的默认值
//     2.rest参数   ... 
//          -...参数名  必须放在参数最后
//          -值为剩余参数组成的数组
//     3.箭头函数

// function ajax(type = 'get') {
//     return type
// }
// console.log(ajax('post')) //post
// console.log(ajax()) //get

// function num(t = 7) {
//     return t
// }
// console.log(num(0)) //0
// console.log(num()) //7

// function obj({ name = "lili", age = '12' }) {
//     console.log(name, age)
// }
// obj({}) //lili 12
// obj({ name: 'dddd', age: 222 }) //dddd 222


// 箭头函数
// 省略写法
//     1.只有一个参数()可以省略
//     2.{}内只有一行代码，也可以省略{}
//     3.{}省略相当于自动加上了return

// 特点
//  1.没有arguments  有rest参数
//  2.不能当做构造函数来使用

// 箭头函数与普通函数的区别
//  1.this 指向问题 
//       ES6    函数定义时所在的对象（函数在哪个对象定义的，就指向哪个对象）
//       Es5    调用对象


// let arr1 = [1, 2, 3, 4];
// let arr2 = arr1.map((i) => {
//     return i * 10
// })
// console.log(arr2) //[ 10, 20, 30, 40 ]

// let fun = () => {
//     console.log(arguments)
// }
// fun(1, 2)//输出一个对象

// let fun = (...rest) => {
//     console.log(rest)
// }
// fun(1, 2) //[ 1, 2 ]是个数组

// let m = 'q';
// let obj = {
//     m: 'aa',
//     say() { //当键名和函数名一致，可以省略键名
//         let say1 = function() {
//             console.log(this) //window;
//             console.log(this.m) //undefined
//         }
//         let say2 = () => {
//             console.log(this) //obj
//             console.log(this.m) //aa
//         }
//         say1();
//         say2();
//     }
// }
// obj.say()